package DAOMySQL;

import Modelo.Producto;
import java.sql.ResultSet;
import java.util.ArrayList;

public class Productos {
    private DAOMySQL.Database db;
    private ArrayList productos;

    public Productos(){
        db = new Database();
        productos = new ArrayList();
    }
    
    /**
     * Metodo para obtener todos los juegos en la DB
     * @return 
     */
    public ArrayList getProductos(){
        productos.clear();
        Producto art;
        db.abrirConexion();
        ResultSet aux = db.query("SELECT J.id_juego as id,J.nombre as nombre,P.plataforma as plataforma,C.categoria as categoria,J.cantidad as stock,J.valor as valor"
                  + " FROM tbl_juego AS J,tbl_categoria AS C,tbl_plataforma AS P"
                  + " WHERE J.id_categoria=C.id_categoria AND J.id_plataforma=P.id_plataforma order by id");
        try{
            while(aux.next()){
                art = new Producto(aux.getString("id"),aux.getString("nombre"),aux.getString("plataforma"),aux.getString("categoria"),aux.getString("valor"),aux.getString("stock"));
                productos.add(art);
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        db.cerrarConexion();
        return productos;
    }
    
    /**
     * Retorna la cantidad de elementos de la consulta
     * @return 
     */
    public int getCantidadProductos(){
        this.productos = this.getProductos();
        return this.productos.size();
    }
    
    /**
     * Inserta un nuevo registro en la DB
     * @param producto 
     */
    public void agregarProducto(Producto producto){
        db.abrirConexion();
        db.queryDML("INSERT INTO tbl_juego (nombre,id_categoria,id_plataforma,cantidad,valor) VALUES ('"
                +producto.getNombre()+"',"+producto.getCategoria()+","+producto.getPlataforma()+",'"+producto.getStock()
                +"','"+producto.getValor()+"')"         
                );
        db.cerrarConexion();
    }
    
    /**
     * Actualiza un producto en la DB
     * @param producto 
     */
    public void actualizaProducto(Producto producto){
        db.abrirConexion();
        db.queryDML("UPDATE tbl_juego set nombre='"+producto.getNombre()+"',id_categoria="+producto.getCategoria()+",id_plataforma="
                +producto.getPlataforma()+",valor="+producto.getValor()+",cantidad="+producto.getStock()
                +" WHERE id_juego="+producto.getId()+"");
        db.cerrarConexion();
    }    

    /**
     * Actualiza el stock de un producto post-venta
     * @param id
     * @param cantidad 
     */
    public void actualizaStock(String id,String cantidad){
        db.abrirConexion();
        db.queryDML("UPDATE tbl_juego SET cantidad = cantidad -"+cantidad+" WHERE id_juego="+id);
        db.cerrarConexion();
    }
}
//END